package singleton_pattern;

/**
 * 单元素枚举类单例
 * 原理：枚举中枚举是 static final 的
 * 首先，在枚举中我们明确了构造方法限制为私有，在我们访问枚举实例时会执行构造方法，
 * 同时每个枚举实例都是static final类型的，也就表明只能被实例化一次。在调用构造方法时，我们的单例被实例化。
 * 也就是说，因为enum中的实例被保证只会被实例化一次，所以我们的INSTANCE也被保证实例化一次。
 * <p>
 * 使用，使用 SingleTonEnum.INSTANCE.getInstance()获取单例
 *
 * @author wangzg13
 * @since 2023/2/16
 */
public enum SingleTonEnum {

    INSTANCE;

    private SingleTon3 singleTon;

    SingleTonEnum() {
        singleTon = new SingleTon3();
    }

    public SingleTon3 getInstance() {
        return singleTon;
    }
}
